It is well known to have personal computers with a great many programs installed thereon. Such programs commonly have many executable components and other software components which, though they do not contain executable instructions are nonetheless essential to the correct functioning of the software in its totality. Moreover packages of software are supplied by multiple vendors and arc intended to work together.
Problems arise when software components are shared between software packages and where software exists in more than one version. Typically software comes to exist in more than one version when new versions are introduced. Often the software supplier envisages and responds to the need of the user who migrates from one version of a package to a newer version of a substantially similar package from the same supplier.
Where packages rely upon third party components they are often installed onto computers along with those third party components. Problems can arise when a version of a shared software component needs to be replaced by a newer version. A typical scenario might be that if a first software package requires a revised version of a first shared component then it happens sometimes that a second software package which worked quite well with the older version of the first shared software component but it will not work well if the older version of the first shared software component is replaced with a newer version. Pursuing this example, it may be that the second software package is in fact capable of working well with newer version of the first shared software component, but only if a further (second) shared software component is also replaced by a still newer version.
Dependencies of software versions one upon another such as those alluded to above can become cascaded or even recursive leading to complex configuration problems. When cooperating software is distributed across multiple distributed computers the problems are further compounded by a need to synchronize versions spatially and temporally.
Commercial products such as OilChange.TM. and IBM (R) OS/400.TM. Operating System address these problem with a degree of success. Embodiments of the present invention contain improvements over the artificial intelligence based and other approaches embodied in the prior art.